Industrial controllers are special purpose computers used for controlling industrial processes and manufacturing equipment. Under the direction of a stored program, the industrial controller examines a series of inputs, reflecting the status of the controlled process, and changes a series of outputs controlling the industrial process. The inputs and outputs may be binary, that is on or off, or analog, providing a value within a continuous range.
An industrial controller differs from a conventional computer in two respects. First, unlike a computer, an industrial controller is normally customized to the particular process it is controlling both by writing control software stored in the controller's memory and by changing the hardware configuration of the controller itself.
The ability to reconfigure the hardware economically is provided by dividing the industrial controller into a number of functional modules each performing a different function. Different combinations of modules may be selectively linked together on a bus having multiple slots each having a unique slot address. A different functional module is placed in each slot to receive messages directed to that slot address.
The modules may include, for example, a processor, a power supply, one or more communication interfaces for communicating with high speed data links and input and output interfaces for receiving and transmitting input and output signals to the controlled process.
An industrial controller also differs from a computer in that data must be transferred to and from the processor at an extremely high speed so that real-time control may be maintained. Normally, the processor module controls communications on the bus, periodically scanning each module, asynchronously, in sequence, designating the module's slot address to read information from that module or to write information to the module. In order that each module can be ensured of a scanning within a given period of time, the amount of data transferred during a single scan to a slot address is normally limited to one word of length equal in bits to the number of parallel lines on the bus.
When it is desired to transfer a large amount of data between the processor module and a given functional module, this scanning process is too slow. Accordingly, in order to avoid the need to wait for repeated scans to transfer multi-word data, it is known to use a block transfer protocol wherein a special block transfer character is used to initiate a serial transfer of data between the processor and the given functional module that may interrupt the scanning process.
Although a block transfer is an efficient means of transferring large amounts of data, like any such sequential transfer, it requires a certain amount of overhead for this type of transmission, such as control data indicating the length of the transfer, the start of the transfer and error checking data added after the transfer.
For the transfer of data that is on the order of two or three words, this overhead prohibitively affects the speed with which the data is transferred. In these cases it is known to use modules that cover multiple slot addresses so that a single scan can transfer multiple words of data to the module via the multiple addresses. In this case, the module will have more than one physical slot address.
With advances in the functional capability of modules, greater capacity for data transfer may be needed. Thus older versions of a module that required only single words of data transfer may be replaced with modules requiring multiple word transfers. For example, later version temperature control modules may provide more data than can be transferred in a single scan of that module.
When such an upgrade in modules is desired, a block transfer to accommodate the extra data to be transferred is prohibitively slow. Yet the solution of using multiple slot addresses is not always available. Considerable investment may have been made in the existing program both in original development costs and in the testing that established its reliability. Because such programs make direct reference to the slot addresses of the modules providing input and output to the program, having the new module usurp multiple slot addresses would require extensive and expensive rewriting of this program.
Thus, the need exists for a method of transferring multi-word data in an asynchronous scanning system that does not require a block transfer-like mechanism nor require the use of additional slot addresses on the bus.